// 类型兼容

// 只要属性相同或者变量类型中的属性完全在值中有, 就可以赋值, 如果两个完全相同可以互相赋值
let x = (a: number) => 0;
let y = (b: number, s: string) => 0;
y = x;
// 这里会报错, 因为x中没有y的参数s
// x = y;

class X {
    constructor(public a: number, public b: number) { }
}

class Y {
    constructor(public a: number, public b: number) { }
}
let x1: X, y1: Y;
x1 = new Y(1, 2);
y1 = new X(1, 2);
x1 = y1;
y1 = x1;